package com.dm.manage.common;

/**
 * 响应结果工具类
 */
public class ResultUtil {
    
    /**
     * 返回成功结果（无数据）
     */
    public static Result<Void> success() {
        return Result.success();
    }
    
    /**
     * 返回成功结果（有数据）
     */
    public static <T> Result<T> success(T data) {
        return Result.success(data);
    }
    
    /**
     * 返回成功结果（自定义消息和数据）
     */
    public static <T> Result<T> success(String message, T data) {
        return Result.success(message, data);
    }
    
    /**
     * 返回失败结果（使用枚举）
     */
    public static <T> Result<T> fail(ResultCode resultCode) {
        return Result.fail(resultCode);
    }
    
    /**
     * 返回失败结果（自定义消息）
     */
    public static <T> Result<T> fail(String message) {
        return Result.fail(message);
    }
    
    /**
     * 返回失败结果（自定义状态码和消息）
     */
    public static <T> Result<T> fail(Integer code, String message) {
        return Result.fail(code, message);
    }
    
    /**
     * 参数校验失败
     */
    public static <T> Result<T> validateFailed() {
        return Result.fail(ResultCode.VALIDATE_FAILED);
    }
    
    /**
     * 参数校验失败（自定义消息）
     */
    public static <T> Result<T> validateFailed(String message) {
        return Result.fail(ResultCode.VALIDATE_FAILED.getCode(), message);
    }
    
    /**
     * 未登录
     */
    public static <T> Result<T> unauthorized() {
        return Result.fail(ResultCode.UNAUTHORIZED);
    }
    
    /**
     * 未登录（自定义消息）
     */
    public static <T> Result<T> unauthorized(String message) {
        return Result.fail(ResultCode.UNAUTHORIZED.getCode(), message);
    }
    
    /**
     * 无权限
     */
    public static <T> Result<T> forbidden() {
        return Result.fail(ResultCode.FORBIDDEN);
    }
    
    /**
     * 无权限（自定义消息）
     */
    public static <T> Result<T> forbidden(String message) {
        return Result.fail(ResultCode.FORBIDDEN.getCode(), message);
    }
}